var fs = require('fs');
var path = require('path');

function traversal(file_path, folder_callback, file_callback) {
    fs.readdir(file_path, function (err, files) {
        if (err) {
            console.warn(err)
        } else {
            //遍历读取到的文件列表
            files.forEach(function (filename) {
                //获取当前文件的绝对路径
                var filedir = path.join(file_path, filename);
                //根据文件路径获取文件信息，返回一个fs.Stats对象
                fs.stat(filedir, function (eror, stats) {
                    if (eror) {
                        console.warn('获取文件stats失败');
                    } else {
                        var isFile = stats.isFile();//是文件
                        var isDir = stats.isDirectory();//是文件夹
                        if (isFile) {
                            file_callback(filedir)
                        }
                        if (isDir) {
                            folder_callback(filedir);
                            //递归，如果是文件夹，就继续遍历该文件夹下面的文件
                            traversal(filedir, folder_callback, file_callback)
                        }
                    }
                })
            });
        }
    });
}

function copy_file(dest, target) {
    fs.readFile(dest, 'utf-8', function (err, data) {
        if (err) {
            console.log("read fail:" + dest);
        } else {
            fs.exists(target, function (exists) {
                if (exists) return;
                fs.writeFileSync(target, data)
                return data;
            });
        }
    });
}

module.exports = {
    traversal: (file_path, folder_callback, file_callback) => {
        traversal(file_path, folder_callback, file_callback);
    },
    copey_file: (dest, target) => {
        copy_file(dest, target);
    }
}